1. Shell正则之Grep
通配符及特殊符号
*
.
..
-
~
$
?
!
[]
{}
[^]
``
$()
&&
||
|
\
&
正则表达式
注意事项:
正则神坑 中文字符
正则符号 基础正则 扩展正则
RE
BRE ERE
^
$
^$
\
.
[]
[^]
[a-z]
[0-9]
?
*
+
.*
()
{n}
{n,}
{n,m}
{,m}
|
特定的字符
[[:upper:]] 所有大写字母
[[:lower:]] 所有小写字母
[[:alpha:]] 所有字母
[[:space:]] 所有空白字符
[[:digit:]] 所有数字
[[:alnum:]] 所有字母和数字
[[:punct:]] 所有特殊符号
grep
[root@shell /scripts/shell13]
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto --time-style=long-iso'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
选项:
-i
-v
-n
-c
-w
-o
-E
-r
-R
-A
-B
-C
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
[root@shell /scripts/shell13]
halt:x:7:0:halt:/sbin:/sbin/halt
[root@shell /scripts/shell13]
9:
14:
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell /scripts/shell13]
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin.
[root@shell /scripts/shell13]
adm:x:3:4:adm:/var/adm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
aaaa:x:1014:1014::/home/aaaa:/bin/bash
abbb:x:1015:1015::/home/abbb:/bin/bash
accc:x:1016:1016::/home/accc:/bin/bash
addd:x:1017:1017::/home/addd:/bin/bash
acc:x:1018:1018::/home/acc:/bin/bash
abb:x:1019:1019::/home/abb:/bin/bash
add:x:1020:1020::/home/add:/bin/bash
aee:x:1021:1021::/home/aee:/bin/bash
caa:x:1025:1025::/home/caa:/bin/bash
cbb:x:1026:1026::/home/cbb:/bin/bash
cdd:x:1027:1027::/home/cdd:/bin/bash
cee:x:1028:1028::/home/cee:/bin/bash
[root@shell /scripts/shell13]
accc:x:1016:1016::/home/accc:/bin/bash
acc:x:1018:1018::/home/acc:/bin/bash
[root@shell /scripts/shell13]
accc:x:1016:1016::/home/accc:/bin/bash
acc:x:1018:1018::/home/acc:/bin/bash
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@shell /scripts/shell13]
145 b
138 n
121 o
119 a
110 s
105 i
86 e
69 h
61 x
[root@shell /scripts/shell13]
55 x
34 bin
30 bash
29 home
28 sbin
22 nologin
11 var
5 lib
4 User
[root@shell /scripts/shell13]
55 x
34 bin
30 bash
29 home
28 sbin
22 nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin.
[root@shell /scripts/shell13]
a
a
aaa
a
a
a
a
aaaa
aaaa
a
a
[root@shell /scripts/shell13]
a
a
a
a
a
a
a
a
a
[root@shell /scripts/shell13]
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin.
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
[root@shell /scripts/shell13]
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin.
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
[root@shell /scripts/shell13]
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rtoo:x:1003:1003::/home/rtoo:/bin/bash
ROOT
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rtoo:x:1003:1003::/home/rtoo:/bin/bash
ROOT
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rtoo:x:1003:1003::/home/rtoo:/bin/bash
ROOT
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
www:x:1000:1000::/home/www:/bin/bash
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
www:x:1000:1000::/home/www:/bin/bash
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
www:x:1000:1000::/home/www:/bin/bash
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@shell /scripts/shell13]
10.0.0.170
255.255.255.0
10.0.0.255
172.16.1.170
255.255.255.0
172.16.1.255
127.0.0.1
255.0.0.0
[root@shell /scripts/shell13]
a 123241423543345433
b 123241C23543345433
c 12324142354334543X
d 12324142X543345433
e 1232414235433454333
a B23241423543345433
[root@shell /scripts/shell13]
a 123241423543345433
c 12324142354334543X
d 12324142X543345433
e 1232414235433454333
[root@shell /scripts/shell13]
a 123241423543345433
c 12324142354334543X
e 1232414235433454333
[root@shell /scripts/shell13]
a 123241423543345433
c 12324142354334543X
2. Shell正则之Sed
三剑客的老二 擅长替换
流编辑器 非交互式的编辑器。
Sed的工作原理
sed命令按照行进行处理内容。处理文件时,首先会将第一行取出放在一个缓冲区中,这个缓冲区我们称之为模式空间。
sed进行处理。如果行匹配处理完成之后将之输出到屏幕,如果行不匹配,将之丢弃。接着处理下一行。同样的操作,知道文件结束。文件的内容其实并没有改变。如果想真正的改变,需要加上-i选项。
sed是可以同时处理多个文件的。
sed的语法:
sed [选项] command files
sed正则使用,跟grep相差不大
sed 使用扩展正则时, 需要使用-r选项
Sed的命令示例:
选项: 增删改查
-n
-i
-r
-e
Sed 的内部命令
a
i
p
d
s
g
c
!
=
w
i
了解
n
h
H
g
G
实例:
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell /scripts/shell13]
ROOT
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
oldboy
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
oldboy
oldgirl
bin:x:1:1:bin:/bin:/sbin/nologin
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
oldboy
[root@shell /scripts/shell13]
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
oldboy
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell /scripts/shell13]
oldboy
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
oldboy
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
-rw-r--r-- 1 root root 77 2020-03-06 15:15 newfile.txt
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
bin:x:1:1:bin:/bin:/sbin/nologin
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
total 16
-rw-r--r-- 1 root root 50 2020-03-04 09:55 ip.log
-rw-r--r-- 1 root root 33 2020-03-06 15:17 newfile-2.txt
[root@shell /scripts/shell13]
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell /scripts/shell13]
1
root:x:0:0:root:/root:/bin/bash
2
bin:x:1:1:bin:/bin:/sbin/nologin
3
daemon:x:2:2:daemon:/sbin:/sbin/nologin
s g i
[root@shell /scripts/shell13]
oldboy:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@shell /scripts/shell13]
oldboy:x:0:0:root:/root:/bin/bash
[root@shell /scripts/shell13]
oldboy:x:0:0:oldboy:/oldboy:/bin/bash
[root@shell /scripts/shell13]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
oldboy:x:0:0:oldboy:/oldboy:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/oldboy:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
dcc:x:1024:1024::/home/dcc:/bin/bash
caa:x:1025:1025::/home/caa:/bin/bash
cbb:x:1026:1026::/home/cbb:/bin/bash
cdd:x:1027:1027::/home/cdd:/bin/bash
cee:x:1028:1028::/home/cee:/bin/bash
halt sbin
oldboy halt sbin
oldboy
[root@shell /scripts/shell13]
rootTEST:x:0:0:rootTEST:/rootTEST:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
10.0.0.170
[root@shell /scripts/shell13]
/bin/bash:/root:root:x:0:0:root
/sbin/nologin:/bin:bin:x:1:1:bin
/sbin/nologin:/sbin:daemon:x:2:2:daemon
/sbin/nologin:/var/adm:adm:x:3:4:adm
/sbin/nologin:/var/spool/lpd:lp:x:4:7:lp
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
[root@shell /scripts/shell13]
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
[root@shell /scripts/shell13]
3. 正则表达式之Awk
什么是awk
awk是一个编程语言
主要作用:对文本和数据的处理
awk处理数据的流程
1. 扫描文件内容,从上到下进行扫描,按照行进行处理的。
2. 寻找匹配到的内容,进行读取到特定的模式中,进行行处理
3. 行满足指定模式动作,则输出到屏幕上面,不满足丢弃
4. 接着读取下一行继续处理,接着循环,直到文件的结尾
awk语法格式
awk [选项] command files
三种格式
行处理前 行处理中 行处理后
BEGIN 执行的命令 最后的显示 END
[root@shell ~]
2
[root@shell ~]
root
bin
daemon
[root@shell ~]
root
bin
daemon
adm
[root@shell ~]
root
bin
daemon
adm
[root@shell ~]
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
内容打印结束
[root@shell ~]
2
OK
OK
内容显示结束
[root@shell ~]
10 10 10
[root@shell ~]
20
[root@shell ~]
root 0
bin 1
daemon 2
awk的工作原理
1. awk将文件中每一行作为输入,将每一行的数据赋值给内部变量 $0
2. awk有开始进行字段分解,根据指定的分隔符,将每个字段进行赋值给内部变量 $1 $2 $3
3. awk默认的分割为空白字符,由内部变量FS来确定,也可以使用-F进行指定对应的分隔符
4. awk处理时使用print进行打印你分割后的字段
5. awk打印输出结果之后,不同字段之间由空格进行分割,这个空格是由不同字段之间的逗号进行映射的,由内部变量OFS进行修改, OFS默认的输出分割符就是空格
6. awk输出一行内容之后,从新读取下一行内容,会覆盖内部变量$0,然后新的字符进行字段分割并进行处理。
匹配 模式 动作
[root@shell ~]
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@shell ~]
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell ~]
root
operator
[root@shell ~]
48018556
[root@shell ~]
[root@shell ~]
48018556
4. Awk的内部变量
1. 输入分割符
FS 输入分隔符 默认以空白字符为分隔符
[root@shell ~]
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
[root@shell ~]
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
[root@shell ~]
0
1
2
3
4
5
6
7
8
[root@shell ~]
10.0.0.170
[root@shell ~]
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:c5:ab:bf brd ff:ff:ff:ff:ff:ff
/ inet 10.0.0.170/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fec5:abbf/64 scope link
valid_lft forever preferred_lft forever
2. 输出分隔符
OFS 默认输出分割为空格, 打印的时候用逗号作为分割,逗号就是输出分割符,在显示的时候,默认映射为空格。
[root@shell ~]
root x 0
bin x 1
daemon x
adm x
lp x
sync x
shutdown x
halt x
mail x
[root@shell ~]
rootx 0
binx 1
daemonx
admx
lpx
syncx
shutdownx
haltx
mailx
[root@shell ~]
root x 0
bin x 1
daemon x
adm x
lp x
sync x
shutdown x
halt x
mail x
[root@shell ~]
root@x 0
bin@x 1
daemon@x
adm@x
lp@x
sync@x
shutdown@x
halt@x
mail@x
[root@shell ~]
root$x 0
bin$x 1
daemon$x
adm$x
lp$x
sync$x
shutdown$x
halt$x
mail$x
3. 内部变量NF 最后一列
NF 表示每一行最后一列 $NF 打印最后一列的内容
[root@shell ~]
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
[root@shell ~]
6
6
7
7
7
7
7
7
7
[root@shell ~]
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
[root@shell ~]
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
4. 内部变量$0
$0 表示整行内容
[root@shell ~]
root:x 0:100:root:/root:/bin/bash
bin:x 1:200:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
root:x 0:100:root:/root:/bin/bash
5. 内部变量NR
NR 表示是行号 $NR
[root@shell ~]
1 root:x 0:100:root:/root:/bin/bash
2 bin:x 1:200:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
root:x 0:100:root:/root:/bin/bash
[root@shell ~]
root:x 0:100:root:/root:/bin/bash
[root@shell ~]
root:x root:x 0:100:root:/root:/bin/bash
1:200:bin:/bin:/sbin/nologin bin:x 1:200:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
6. 内部变量 FNR
FNR 显示行号,针对对个文件时进行处理
不同的文件显示各自的行号
[root@shell ~]
1 root:x 0:100:root:/root:/bin/bash
2 bin:x 1:200:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
11 link/ether 00:0c:29:c5:ab:bf brd ff:ff:ff:ff:ff:ff
12 / inet 10.0.0.170/24 brd 10.0.0.255 scope global eth0
13 valid_lft forever preferred_lft forever
14 inet6 fe80::20c:29ff:fec5:abbf/64 scope link
15 valid_lft forever preferred_lft forever
[root@shell ~]
1 root:x 0:100:root:/root:/bin/bash
2 bin:x 1:200:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
1 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
2 link/ether 00:0c:29:c5:ab:bf brd ff:ff:ff:ff:ff:ff
3 / inet 10.0.0.170/24 brd 10.0.0.255 scope global eth0
4 valid_lft forever preferred_lft forever
5 inet6 fe80::20c:29ff:fec5:abbf/64 scope link
6 valid_lft forever preferred_lft forever
了解
8. awk格式化输出
[root@shell ~]
Mon Mar 9 10:58:52 CST 2020
[root@shell ~]
今年是:2020年 今月为:Mar月
[root@shell ~]
用户为:root UID为:0 GID为:0
用户为:bin UID为:1 GID为:1
用户为:daemon UID为:2 GID为:2
用户为:adm UID为:3 GID为:4
用户为:lp UID为:4 GID为:7
用户为:sync UID为:5 GID为:0
printf 函数输出 了解
[root@shell ~]
用户为:root UID为:0 GID为:0
用户为:bin UID为:1 GID为:1
用户为:daemon UID为:2 GID为:2
用户为:adm UID为:3 GID为:4
用户为:lp UID为:4 GID为:7
用户为:sync UID为:5 GID为:0
用户为:shutdown UID为:6 GID为:0
用户为:halt UID为:7 GID为:0
用户为:mail UID为:8 GID为:12
5. Awk模式动作
1. 正则表达式
[root@shell ~]
root:x:0:0:root:/root:/bin/bash
[root@shell ~]
root:x:0:0:root:/root:/bin/bash
[root@shell ~]
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
[root@shell ~]
bin:x:1:root:bin:/bin:/sbin/nologin
[root@shell ~]
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
2. 比较表达式
关系运算符
< 小于
<= 小于等于
== 等于
> 大于
>= 大于等于
!= 不等于
x<y
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@shell ~]
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
[root@shell ~]
bin:x:1:root:bin:/bin:/sbin/nologin
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
/dev/sda3 50101352 2082836 48018516 5% /
[root@shell ~]
[root@shell ~]
48018516
[root@shell ~]
48018516
3. 条件表达式
[root@shell ~]
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@shell ~]
root
nc
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
tss
abrt
sshd
postfix
rpc
rpcuser
/sbin/nologin
ntp
www
/bin/bash
mysql
/bin/bash
/bin/bash
/bin/bash
nginx
/bin/bash
4. 运算表达式
[root@shell ~]
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
www:x:1000:1000::/home/www:/bin/bash
user:x:1001:1001::/home/user:/bin/bash
test:x:1002:1002::/home/test:/bin/bash
rtoo:x:1003:1003::/home/rtoo:/bin/bash
abc1:x:1004:1004::/home/abc1:/bin/bash
[root@shell ~]
0
1
2
3
4
5
6
7
8
11
12
14
99
/sbin/nologin
81
/sbin/nologin
[root@shell ~]
5
[root@shell ~]
15
[root@shell ~]
3
[root@shell ~]
10
[root@shell ~]
1
[root@shell ~]
3125
[root@shell ~]
0
[root@shell ~]
5
[root@shell ~]
5 0
[root@shell ~]
5
[root@shell ~]
5
[root@shell ~]
0
[root@shell ~]
awk: cmd. line:1: (FILENAME=passwd FNR=6) fatal: division by zero attempted
[root@shell ~]
awk: cmd. line:1: /sync/{print $3\/$4}
awk: cmd. line:1: ^ backslash not last character on line
awk: cmd. line:1: /sync/{print $3\/$4}
awk: cmd. line:1: ^ syntax error
[root@shell ~]
awk: cmd. line:1: (FILENAME=passwd FNR=6) fatal: division by zero attempted in `%'
[root@shell ~]# awk -F: '/sync/{print $3^$4}' passwd
1
[root@shell ~]# awk -F: 'BEGIN{print 5/0}'
awk: cmd. line:1: fatal: division by zero attempted
[root@shell ~]# awk -F: 'BEGIN{print 5%0}'
awk: cmd. line:1: fatal: division by zero attempted in `%'
[root@shell ~]
5. 逻辑操作符
&& 并且
|| 或者
! 非
[root@shell ~]
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
root:x:40:7:lp:/var/spool/lpd:/sbin/nologin
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
root:x:40:7:lp:/var/spool/lpd:/sbin/nologin
[root@shell ~]
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
练习题
作业:
解释一下命令的含义
6. Awk判断语句
if
[root@shell ~]
root:x:0:0:root:/root:/bin/bash
[root@shell ~]
1
[root@shell ~]
当前系统管理员用户的数量为:1
[root@shell ~]
[root@shell ~]
root:x:0:100:root:/root:/bin/bash
bin:x:1:root:bin:/bin:/sbin/nologin
daemon:x:0:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
root:x:0:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@shell ~]
当前系统管理员用户的数量为:3
if else
[root@shell ~]
当前系统超级管理员用户的数量为:1
当前系统其它用户数量为:54
[root@shell ~]
55 /etc/passwd
[root@shell ~]
当前系统超级管理员用户的数量为:1 当前系统其它用户数量为:54
if else if else
[root@shell ~]
管理员数量为:1 系统用户数量为:24 普通用户数量为:30
7. Awk循环语句
for
[root@shell ~]
1
2
3
4
5
6
7
8
9
10
[root@shell ~]
useradd qiudao1
useradd qiudao2
useradd qiudao3
useradd qiudao4
useradd qiudao5
useradd qiudao6
useradd qiudao7
useradd qiudao8
useradd qiudao9
useradd qiudao10
[root@shell ~]
[root@shell ~]
qiudao1:x:1029:1029::/home/qiudao1:/bin/bash
qiudao2:x:1030:1030::/home/qiudao2:/bin/bash
qiudao3:x:1031:1031::/home/qiudao3:/bin/bash
qiudao4:x:1032:1032::/home/qiudao4:/bin/bash
qiudao5:x:1033:1033::/home/qiudao5:/bin/bash
qiudao6:x:1034:1034::/home/qiudao6:/bin/bash
qiudao7:x:1035:1035::/home/qiudao7:/bin/bash
qiudao8:x:1036:1036::/home/qiudao8:/bin/bash
qiudao9:x:1037:1037::/home/qiudao9:/bin/bash
qiudao10:x:1038:1038::/home/qiudao10:/bin/bash
[root@shell ~]
date -s 2020/03/1&>/dev/null && touch `date +%F`.txt
date -s 2020/03/2&>/dev/null && touch `date +%F`.txt
date -s 2020/03/3&>/dev/null && touch `date +%F`.txt
date -s 2020/03/4&>/dev/null && touch `date +%F`.txt
date -s 2020/03/5&>/dev/null && touch `date +%F`.txt
date -s 2020/03/6&>/dev/null && touch `date +%F`.txt
date -s 2020/03/7&>/dev/null && touch `date +%F`.txt
date -s 2020/03/8&>/dev/null && touch `date +%F`.txt
date -s 2020/03/9&>/dev/null && touch `date +%F`.txt
date -s 2020/03/10&>/dev/null && touch `date +%F`.txt
[root@shell ~]
[root@shell ~]
total 20
-rw-r--r-- 1 root root 0 2020-03-01 00:00 2020-03-01.txt
-rw-r--r-- 1 root root 0 2020-03-02 00:00 2020-03-02.txt
-rw-r--r-- 1 root root 0 2020-03-03 00:00 2020-03-03.txt
-rw-r--r-- 1 root root 0 2020-03-04 00:00 2020-03-04.txt
-rw-r--r-- 1 root root 0 2020-03-05 00:00 2020-03-05.txt
-rw-r--r-- 1 root root 0 2020-03-06 00:00 2020-03-06.txt
-rw-r--r-- 1 root root 0 2020-03-07 00:00 2020-03-07.txt
-rw-r--r-- 1 root root 0 2020-03-08 00:00 2020-03-08.txt
-rw-r--r-- 1 root root 0 2020-03-09 00:00 2020-03-09.txt
-rw-r--r-- 1 root root 0 2020-03-10 00:00 2020-03-10.txt
while
[root@shell ~]
1
2
3
4
5
6
7
8
9
10
[root@shell ~]
useradd shanghai1
useradd shanghai2
useradd shanghai3
useradd shanghai4
useradd shanghai5
useradd shanghai6
useradd shanghai7
useradd shanghai8
useradd shanghai9
useradd shanghai10
[root@shell ~]
[root@shell ~]
shanghai1:x:1039:1039::/home/shanghai1:/bin/bash
shanghai2:x:1040:1040::/home/shanghai2:/bin/bash
shanghai3:x:1041:1041::/home/shanghai3:/bin/bash
shanghai4:x:1042:1042::/home/shanghai4:/bin/bash
shanghai5:x:1043:1043::/home/shanghai5:/bin/bash
shanghai6:x:1044:1044::/home/shanghai6:/bin/bash
shanghai7:x:1045:1045::/home/shanghai7:/bin/bash
shanghai8:x:1046:1046::/home/shanghai8:/bin/bash
shanghai9:x:1047:1047::/home/shanghai9:/bin/bash
shanghai10:x:1048:1048::/home/shanghai10:/bin/bash
[root@shell ~]
[root@shell ~]
-rw-r--r-- 1 root root 0 2020-03-01 00:00 2020-03-01.log
-rw-r--r-- 1 root root 0 2020-03-02 00:00 2020-03-02.log
-rw-r--r-- 1 root root 0 2020-03-03 00:00 2020-03-03.log
-rw-r--r-- 1 root root 0 2020-03-04 00:00 2020-03-04.log
-rw-r--r-- 1 root root 0 2020-03-05 00:00 2020-03-05.log
-rw-r--r-- 1 root root 0 2020-03-06 00:00 2020-03-06.log
-rw-r--r-- 1 root root 0 2020-03-07 00:00 2020-03-07.log
-rw-r--r-- 1 root root 0 2020-03-08 00:00 2020-03-08.log
-rw-r--r-- 1 root root 0 2020-03-09 00:00 2020-03-09.log
-rw-r--r-- 1 root root 0 2020-03-10 00:00 2020-03-10.log
8. Awk数组
计算 求和 +=
统计 次数 ++
1. 计算数字1-100之间的和
[root@shell ~]
5050
2. 计算出访问日志所有IP的响应返回的总字节数
[root@shell ~]
1308567366
3. 统计出/etc/passwd文件中每个shell的数量
[root@shell ~]
/bin/sync 1
/bin/bash 50
/sbin/nologin 22
/sbin/halt 1
/sbin/shutdown 1
[root@shell ~]
4. 取出访问日志中每个IP的访问次数
[root@shell ~]
139.226.172.217 16033
47.102.42.79 1041
180.95.238.82 994
113.140.249.33 727
223.166.74.124 647
112.87.125.55 525
182.138.163.167 429
112.87.125.53 373
223.166.74.198 352
182.138.158.169 308
5. 统计出tcp的11种状态的数量
[root@shell ~]
LISTEN 6
ESTABLISHED 1
6. 统计出secure.log日志中破解你密码次数最多的10个IP
[root@shell01 ~]
218.65.30.25 80102
218.65.30.53 40050
218.87.109.154 24742
112.85.42.103 21086
218.65.30.122 20030
112.85.42.99 20029
218.65.30.124 20027
218.65.30.123 20027
182.100.67.119 20027
218.87.109.151 20025
7. 统计出访问日志中每个IP的访问次数和每个IP对应返回的字节数量
[root@shell ~]
139.226.172.217 16033 749869585
47.102.42.79 1041 16462
180.95.238.82 994 154136
113.140.249.33 727 105270
223.166.74.124 647 93670
112.87.125.55 525 15640394
182.138.163.167 429 62205
112.87.125.53 373 10792077
223.166.74.198 352 61217
182.138.158.169 308 44660
8. 统计出访问日志中每个IP的每种状态码的数量
[root@shell ~]
139.226.172.217 200 14731
139.226.172.217 304 805
139.226.172.217 404 193
139.226.172.217 302 108
139.226.172.217 499 99
139.226.172.217 206 88
139.226.172.217 504 9